#pragma once

namespace qbe::draw {

enum struct Code {
  PolygonCacheAdd,
  PolygonCacheUpdate,
  PolygonCacheDelete,
  PolygonAdd,

  PathCacheAdd,
  PathCacheUpdate,
  PathCacheDelete,
  PathAdd,

  LabelCacheAdd,
  LabelCacheUpdate,
  LabelCacheDelete,
  LabelAdd,

  PinCacheAdd,
  PinCacheUpdate,
  PinCacheDelete,
  PinAdd,

  KeyPointCacheAdd,
  KeyPointCacheUpdate,
  KeyPointCacheDelete,
  KeyPointAdd,

  EllipseCacheAdd,
  EllipseCacheUpdate,
  EllipseCacheDelete,
  EllipseAdd,

  FanCacheAdd,
  FanCacheUpdate,
  FanCacheDelete,
  FanAdd,

  RectangleCacheAdd,
  RectangleCacheUpdate,
  RectangleCacheDelete,
  RectangleAdd,

  TextCacheAdd,
  TextCacheUpdate,
  TextCacheDelete,
  TextAdd,

  RulerCacheAdd,
  RulerCacheUpdate,
  RulerCacheDelete,
  RulerAdd,

  SectionArea3DCacheAdd,
  SectionArea3DCacheUpdate,
  SectionArea3DCacheDelete,
  SectionArea3DAdd,

  ViewArea3DCacheAdd,
  ViewArea3DCacheUpdate,
  ViewArea3DCacheDelete,
  ViewArea3DAdd,
};

struct Event {
  Code code;
};

}  // namespace qbe::draw